home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1996 May: Tool Chest / Developer CD Series May 1996 (Tool Chest) (Apple Computer) (1996).iso / Tool Chest / Interfaces & Libraries / Interfaces / PInterfaces / Timer.p < prev    next >
Encoding:
Text File  |  1995-07-06  |  2.6 KB  |  124 lines  |  [TEXT/MPS ]

  1. {
  2.      File:        Timer.p
  3.  
  4.      Contains:    Time Manager interfaces.
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Package:    Universal Interfaces 2.1 in “MPW Latest” on ETO #18
  8.  
  9.      Copyright:    © 1984-1995 by Apple Computer, Inc.
  10.                  All rights reserved.
  11.  
  12.      Bugs?:        If you find a problem with this file, use the Apple Bug Reporter
  13.                  stack.  Include the file and version information (from above)
  14.                  in the problem description and send to:
  15.                      Internet:    apple.bugs@applelink.apple.com
  16.                      AppleLink:    APPLE.BUGS
  17.  
  18. }
  19.  
  20. {$IFC UNDEFINED UsingIncludes}
  21. {$SETC UsingIncludes := 0}
  22. {$ENDC}
  23.  
  24. {$IFC NOT UsingIncludes}
  25.  UNIT Timer;
  26.  INTERFACE
  27. {$ENDC}
  28.  
  29. {$IFC UNDEFINED __TIMER__}
  30. {$SETC __TIMER__ := 1}
  31.  
  32. {$I+}
  33. {$SETC TimerIncludes := UsingIncludes}
  34. {$SETC UsingIncludes := 1}
  35.  
  36.  
  37. {$IFC UNDEFINED __TYPES__}
  38. {$I Types.p}
  39. {$ENDC}
  40. {    ConditionalMacros.p                                            }
  41.  
  42. {$IFC UNDEFINED __OSUTILS__}
  43. {$I OSUtils.p}
  44. {$ENDC}
  45. {    MixedMode.p                                                    }
  46. {    Memory.p                                                    }
  47.  
  48. {$PUSH}
  49. {$ALIGN MAC68K}
  50. {$LibExport+}
  51.  
  52. CONST
  53. { high bit of qType is set if task is active }
  54.     kTMTaskActive                = 0+(1 * (2**(15)));
  55.  
  56.     
  57. TYPE
  58.     TMTaskPtr = ^TMTask;
  59.  
  60.     {
  61.         TimerProcPtr uses register based parameters on the 68k and cannot
  62.         be written in or called from a high-level language without the help of
  63.         mixed mode or assembly glue.
  64.  
  65.         In:
  66.          => tmTaskPtr       A1.L
  67.     }
  68.     TimerProcPtr = Register68kProcPtr;  { register PROCEDURE Timer(tmTaskPtr: TMTaskPtr); }
  69.     TimerUPP = UniversalProcPtr;
  70.  
  71.     TMTask = RECORD
  72.         qLink:                    QElemPtr;
  73.         qType:                    INTEGER;
  74.         tmAddr:                    TimerUPP;
  75.         tmCount:                LONGINT;
  76.         tmWakeUp:                LONGINT;
  77.         tmReserved:                LONGINT;
  78.     END;
  79.  
  80.  
  81. PROCEDURE InsTime(tmTaskPtr: QElemPtr);
  82.     {$IFC NOT GENERATINGCFM}
  83.     INLINE $205F, $A058;
  84.     {$ENDC}
  85. PROCEDURE InsXTime(tmTaskPtr: QElemPtr);
  86.     {$IFC NOT GENERATINGCFM}
  87.     INLINE $205F, $A458;
  88.     {$ENDC}
  89. PROCEDURE PrimeTime(tmTaskPtr: QElemPtr; count: LONGINT);
  90.     {$IFC NOT GENERATINGCFM}
  91.     INLINE $201F, $205F, $A05A;
  92.     {$ENDC}
  93. PROCEDURE RmvTime(tmTaskPtr: QElemPtr);
  94.     {$IFC NOT GENERATINGCFM}
  95.     INLINE $205F, $A059;
  96.     {$ENDC}
  97. PROCEDURE Microseconds(VAR microTickCount: UnsignedWide);
  98.     {$IFC NOT GENERATINGCFM}
  99.     INLINE $A193, $225F, $22C8, $2280;
  100.     {$ENDC}
  101. CONST
  102.     uppTimerProcInfo = $0000B802; { Register PROCEDURE (4 bytes in A1); }
  103.  
  104. FUNCTION NewTimerProc(userRoutine: TimerProcPtr): TimerUPP;
  105.     {$IFC NOT GENERATINGCFM }
  106.     INLINE $2E9F;
  107.     {$ENDC}
  108.  
  109. PROCEDURE CallTimerProc(tmTaskPtr: TMTaskPtr; userRoutine: TimerUPP);
  110.     {$IFC NOT GENERATINGCFM}
  111.     {To be implemented:  Glue to move parameters into registers.}
  112.     {$ENDC}
  113.  
  114. {$ALIGN RESET}
  115. {$POP}
  116.  
  117. {$SETC UsingIncludes := TimerIncludes}
  118.  
  119. {$ENDC} {__TIMER__}
  120.  
  121. {$IFC NOT UsingIncludes}
  122.  END.
  123. {$ENDC}
  124.